#音乐库= @加载动态库【“./音乐播放库.dll”】
#飞行音乐=#音乐库@播放音乐【“./res/sound/fly.mp3”，真】
#碰撞音乐=#音乐库@播放音乐【“./res/sound/bump.mp3”，真】
#得分音乐=#音乐库@播放音乐【“./res/sound/pass.mp3”，真】

#得分 = 0
#飞行状态 = 0
#鸟图片序号 = 0
#运行状态 = 真

@显示窗口、《窗口 #名=“#窗”，#标题=“飞扬的小鸟”，#高=552，#宽=288，【
    《图片 #名=“#背景” #源=“./res/img/bg.jpg”，#X=0，#Y=0》
    
    《图片 #名=“#鸟”，#源=“./res/img/bird/bird0.png”,#X=50,#Y=200》
    
    《图片 #名=“#柱1”，#源=“./res/img/pipe_down.png”,#X=220,#Y=-200》
    《图片 #名=“#柱2”，#源=“./res/img/pipe_up.png”,#X=220,#Y=320》
    《图片 #名=“#柱3”，#源=“./res/img/pipe_down.png”,#X=420,#Y=-200》
    《图片 #名=“#柱4”，#源=“./res/img/pipe_up.png”,#X=420,#Y=320》
    《图片 #名=“#柱5”，#源=“./res/img/pipe_down.png”,#X=620,#Y=-200》
    《图片 #名=“#柱6”，#源=“./res/img/pipe_up.png”,#X=620,#Y=320》
    
    《图片 #名=“#地面”，#源=“./res/img/land.jpg”，#X=0，#Y=400》
    
    《列面板 #名=“#面板”，#宽=120，#高=0，#背景色=“#ffcc99”，#Z=999，【
        《标签 #文本=“游戏结束”，#Y=10》
        《标签 #名=“#面板得分”，#文本=“得分：”，#字号=16，#Y=10》
        《按钮 #名=“#重新开始按钮” #文本=“重新开始”，#Y=10，#光标=“手”》
    】》
    《标签 #名=“#界面得分” #X=3，#Y=3，#文本=“0”，#Z=999》
】》


#柱子集合 = 【#柱1，#柱2，#柱3，#柱4，#柱5，#柱6】

#窗@鼠标按下命令 = @【】｛
    如果 取反 #运行状态｛返回 空｝
    #飞行音乐@停止【】 
    #飞行音乐@播放【】 
    #飞行状态 = 8
｝

#背景定时器 = @创建定时器【16，@【】｛   
    如果 取反 #运行状态｛返回 空｝
    
    遍历 #柱子集合 为 #柱 ｛
        #X = @转整数、#柱#X
        #X 自减 1
        #柱#X = #X 
    ｝
    
    #X ： @转整数、#背景#X
    如果 #X 小于 -288 ｛
        #X = 0 
    ｝否则 ｛
        #X 自减 1 
    ｝
    
    #背景#X = #X
    #地面#X = #X
    
    遍历 #柱子集合 为 #柱 ｛
        #碰撞 = @检测碰撞【#鸟，#柱】 
        如果 #碰撞 ｛
             #运行状态 = 假
            #碰撞音乐@播放【】
            #面板#高 = 105
            跳出
        ｝
    ｝
    
    当 #序：0，#序 小于 @取长度、#柱子集合，#序 自加 2 ｛
        如果 @转整数【#柱子集合#序#X】 小于 -52 ｛
            @重置柱子【】
        ｝
        如果 @转整数【#柱子集合#序#X】 等于 20 ｛
            #得分音乐@播放【】
            #得分 = #得分 + 1
            #界面得分#文本 = @转字符串、#得分
            #面板得分#文本 = “得分：” + #得分
            跳出
        ｝
    ｝

｝】

#背景定时器@启动【】

#飞行定时器 = @创建定时器【50，@【】｛
    如果 取反 #运行状态｛返回 空｝
     #Y ： #鸟#Y
    如果 #飞行状态 大于 0 ｛
        #飞行状态 自减 1 
        如果 #Y 大于 10 ｛
            #Y 自减 8
            #鸟#Y = #Y 
        ｝
    ｝否则｛
        如果 #Y 小于 360 ｛
            #Y 自加 10 
            #鸟#Y = #Y 
        ｝
    ｝
 
｝】
#飞行定时器@启动【】

#翅膀定时器 = @创建定时器【120，@【】｛
     如果 取反 #运行状态｛返回 空｝
     如果 #飞行状态 大于 0 ｛
        #鸟图片序号 自加 1 
        #鸟图片序号 = #鸟图片序号 模 3 
        #鸟#源 = “./res/img/bird/bird” + #鸟图片序号 + “.png” 
    ｝

｝】
#翅膀定时器@启动【】

@检测碰撞 = @【#鸟，#柱】｛
     @转整数【#鸟#X】+34 大于 @转整数【#柱#X】
     且
     @转整数【#鸟#X】 小于 @转整数【#柱#X】 + 52
     且
     @转整数【#鸟#Y】+34 大于 @转整数【#柱#Y】
     且
     @转整数【#鸟#Y】 小于 @转整数【#柱#Y】 + 320
｝

@重置柱子 = @【】｛
    #最右：0
    当 #序：0，#序 小于 @取长度、#柱子集合，#序 自加 2 ｛
         #X = @转整数、#柱子集合#序#X
        如果 #X 大于 #最右 ｛
            #最右 = #X 
        ｝
    ｝
    
    如果 #最右 小于 288 ｛
        #最右 = 288 
    ｝
    #最右 = #最右 + 120 + #数学库@随机数【50】
    
    #上Y = -260 + #数学库@随机数【240】
    #下Y = #上Y + 450 + #数学库@随机数【40】
    
    当 #序：0，#序 小于 @取长度、#柱子集合，#序 自加 2 ｛
        如果 @转整数【#柱子集合#序#X】 小于 -52 ｛
            #柱子集合#序#X = #最右
            #柱子集合#序#Y = #上Y
            #柱子集合#【#序+1】#X = #最右
            #柱子集合#【#序+1】#Y = #下Y
            返回 空
        ｝
    ｝
｝

#重新开始按钮@命令 = @【】｛
    #面板#高=0
    #柱1#X=220,#柱1#Y=-200
    #柱2#X=220,#柱2#Y=320
    #柱3#X=420,#柱3#Y=-200
    #柱4#X=420,#柱4#Y=320
    #柱5#X=620,#柱5#Y=-200
    #柱6#X=620,#柱6#Y=320
    #得分 = 0
    #界面得分#文本 = “0”
    #面板得分#文本 = “得分：0”
    #运行状态 = 真
｝















